package com.monster.dao;

import com.monster.pojo.Playlist;
import com.monster.pojo.Song;
import com.monster.pojo.Tag;
import com.monster.pojo.User;

import java.util.ArrayList;
import java.util.List;

public interface PlaylistDao {
    //获取歌单总数量
    public int getTotalCount(Tag tag,String orderType);

    //查询所有的歌单并按照播放量降序排列
    public List<Playlist> findAll(int page, int size);
    //根据Playlist_id查歌单信息；
    public Playlist getPlaylistByPlaylistId(Long playlistId);
    //通过歌单名 模糊 查 歌曲集合；
    List<Playlist> selectPlaylist(String name);
    // 歌单的增方法；
    public int addPlaylist(Playlist Playlist);
    //歌单的删方法
    public int deletePlaylist(Long playlistId);
    //歌单的改方法
    public int updatePlaylist(Playlist Playlist);
    //通过标签查询歌单集合
    public List<Playlist> selectPlaylistByTag(Tag tag,String orderType, int page, int size);
    //通过歌曲ID，歌单ID删除歌单里面的歌曲
    public int deletePlayListSongBySongId(Playlist Playlist, Long songId);
    //给歌单增加歌曲
    public int addPlaylistSong(Playlist Playlist, Long songId);
    // 查询歌单的歌曲数量
    public int getSongCount(Long playlistId);
    // 通过歌单ID，查询创建人信息
    public User getFounderByPlaylistId(Long playlistId);
    // 通过用户ID，查询创建的歌单
    public ArrayList<Playlist> listCreatedPlaylistByUserId(Long userId, int page);
    //下面方法用于详细查询歌单信息
    //通过歌单ID 查询歌单中的所有歌曲
    public ArrayList<Song> selectSongIdByPlaylistId(Long PlaylistId);
    //通过歌单ID，查询所对应的标签集合
    public ArrayList<Tag> selectTagByPlaylistId(Long PlaylistId);
    /**
     * 通过歌单ID=like_id，like_type=2(歌单)获取歌单的收藏数量
     */
    public Long selectCollectAmountByPlaylistId(Long playlistId);

    /**
     * 通过歌单ID=type_id  comment_type=2(2代表歌单评论的类型)  查询歌单ID对应评论总条数
     */
    public Long selectCommentCountByPlaylistId(Long playlistId);
    /**
     * 通过标签分类查询歌单
     */
    public List<Playlist> selectPlaylistByTagType(Tag tag,int page);

    //通过用户ID查找用户创建的歌单
    public ArrayList<Playlist> listSetPlaylistByUserId(Long userId, int page);
}
